package SecondeStage.ChangYongLei;

public class BaoZhuangLei {
    public static void main(String[] args) {
        // 包装类: 针对8种基本数据类型相应的引用类型
        // 有了类的特点，就可以调用类中的方法

        //1. boolean->Boolean
        //2. char->Character
        //3. byte->Byte
        //4. short->Short
        //5. int->Integer
        //6. float->Float
        //7. double->Double
        //8. long->Long

        // 演示 int -> Integer 的装箱和拆箱,其他包装类的用法类似
        // jdk5 以前是手动装箱和拆箱
        // 手动装箱 int -> Integer
        int n1 =100;
        Integer integer = new Integer(n1);
        // 手动拆箱 Integer -> int
        int i = integer.intValue();

        // jdk5 以后就可以自动装箱和拆箱
        // 自动装箱 int -> Integer
        int n2 =200;
        Integer integer2 =n2; // 底层使用的是 Integer.valueOf(n2);
        // 自动拆箱 Integer -> int
        int j = integer2; //底层使用的是 intValue()方法

        Object obj1 = true? new Integer(1):new Double(2.0);
        // 三元运算符是一个整体，Double的精度更高，提升优先级，1->1.0
        System.out.println(obj1);

        // 包装类型(Integer为例) -> String
        Integer k = 100; // 自动装箱
        // 方式1
        String str1 = k + "";
        // 方式2
        String str2 = k.toString();
        // 方式3
        String str3 = String.valueOf(k);

        // String -> 包装类型
        String str4 ="1234";
        // 方式1
        Integer i2 = Integer.parseInt(str4); //Integer.parseInt()的返回类型是int，所以这里使用了自动装箱
        // 方式2
        Integer i3 = new Integer(str4);
    }
}
